'use strict'

const Titbit = require('titbit')

const app = new Titbit({
  debug: true
})

//用于代码的演示，实际的数据一般是通过文件或数据库
//假设这里有很多数据
let datamodel = {}

//GET 即表示获取
app.get('/content/:id', async ctx => {
  if (!datamodel[ctx.param.id]) {
    return ctx.status(404).send('未找到')
  }

  ctx.send(datamodel[ctx.param.id])
})

//不指定具体的资源id，则表示获取列表
app.get('/content', async ctx => {
  //实际是会去数据库查询，获得列表
  ctx.send( Object.keys(datamodel) )
})

//POST表示创建
app.post('/content', async ctx => {
  //实际会做检测并进行后续处理
  datamodel[ctx.body.id] = ctx.body
  //有时候会把创建的数据和id返回
  ctx.send('ok')
})

//PUT 表示更新
app.put('/content/:id', async ctx => {
  if (!datamodel[ctx.param.id]) {
    return ctx.status(404).send('没有此资源')
  }

  datamodel[ctx.param.id] = ctx.body

  ctx.send('ok')
})

//DELETE 表示删除
app.delete('/content/:id', async ctx => {
  delete datamodel[ctx.param.id]
})

app.run(1235)

//使用cluster模式
//app.daemon(1235)
